home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / archives / com / internet / stik / gls002b5.zoo / transprt.h < prev    next >
C/C++ Source or Header  |  1997-03-15  |  10KB  |  225 lines

  1. /*
  2.  *      transprt.h          (c) Steve Adam   1995
  3.  *                              steve@netinfo.com.au
  4.  *                   Support by Dan Ackerman 1996
  5.  *                              ackerman.29@postbox.acs.ohio-state.edu
  6.  *
  7.  *      Include this file to use functions from STiK.
  8.  *      i.e.: tcp, udp, etc ...
  9.  *
  10.  *    Modified 2/16/97 for MiNTlib compatibility --dsb
  11.  */
  12.  
  13. #ifndef STIK_TRANSPRT_H
  14. #define STIK_TRANSPRT_H
  15.  
  16. #ifndef COMPILER_H
  17. #include <compiler.h>
  18. #endif
  19.  
  20. #ifndef   STIK_DRIVERS_H
  21. #include  "drivers.h"
  22. #endif /* STIK_DRIVERS_H */
  23.  
  24.  
  25. /*--------------------------------------------------------------------------*/
  26.  
  27. #define TRANSPORT_DRIVER    "TRANSPORT_TCPIP"
  28. #define TCP_DRIVER_VERSION  "01.11"
  29.  
  30. /*
  31.  * TCP connection states
  32.  */
  33. #define TCLOSED     0   /* No connection.  Null, void, absent, ...          */
  34. #define TLISTEN     1   /* Wait for remote request                          */
  35. #define TSYN_SENT   2   /* Connect request sent.  Await matching request    */
  36. #define TSYN_RECV   3   /* Wait for connection ACK.  (Listener only ??)     */
  37. #define TESTABLISH  4   /* Connection is established.  Handshake completed  */
  38. #define TFIN_WAIT1  5   /* Await termination request or acknowledgement     */
  39. #define TFIN_WAIT2  6   /* Await termination request                        */
  40. #define TCLOSE_WAIT 7   /* Await termination request from local user        */
  41. #define TCLOSING    8   /* Await termination acknowledge from remote TCP    */
  42. #define TLAST_ACK   9   /* Await acknowledgement of terminate request sent  */
  43. #define TTIME_WAIT 10   /* Delay to ensure remote has received term' ACK    */
  44.  
  45. /*
  46.  * Error return values
  47.  */
  48. #define E_NORMAL        0       /* No error occured ...                     */
  49. #define E_OBUFFULL     -1       /* Output buffer is full                    */
  50. #define E_NODATA       -2       /* No data available                        */
  51. #define E_EOF          -3       /* EOF from remote                          */
  52. #define E_RRESET       -4       /* RST received from remote                 */
  53. #define E_UA           -5       /* RST.  Other end sent unacceptable pkt    */
  54. #define E_NOMEM        -6       /* Something failed due to lack of memory   */
  55. #define E_REFUSE       -7       /* Connection refused by remote             */
  56. #define E_BADSYN       -8       /* A SYN was received in the window         */
  57. #define E_BADHANDLE    -9       /* Bad connection handle used.              */
  58. #define E_LISTEN       -10      /* The connection is in LISTEN state        */
  59. #define E_NOCCB        -11      /* No free CCB's available                  */
  60. #define E_NOCONNECTION -12      /* No connection matches this packet (TCP)  */
  61. #define E_CONNECTFAIL  -13      /* Failure to connect to remote port (TCP)  */
  62. #define E_BADCLOSE     -14      /* Invalid TCP_close() requested            */
  63. #define E_USERTIMEOUT  -15      /* A user function timed out                */
  64. #define E_CNTIMEOUT    -16      /* A the connection timed out               */
  65. #define E_CANTRESOLVE  -17      /* Can't resolve the hostname               */
  66. #define E_BADDNAME     -18      /* Domain name or dotted dec. bad format    */
  67. #define E_LOSTCARRIER  -19      /* The modem disconnected                   */
  68. #define E_NOHOSTNAME   -20      /* Hostname does not exist                  */
  69. #define E_DNSWORKLIMIT -21      /* Resolver Work limit reached              */
  70. #define E_NONAMESERVER -22      /* No nameservers could be found for query  */
  71. #define E_DNSBADFORMAT -23      /* Bad format of DS query                   */
  72. #define E_UNREACHABLE  -24      /* Destination unreachable                  */
  73. #define E_DNSNOADDR    -25      /* No address records exist for host        */
  74. #define E_LOCKED       -26    /* Routine is unavailable */
  75. #define E_LASTERROR     26    /* ABS of last error code in this list      */
  76.  
  77. /*
  78.  * FLagbox Flag definitions (max 64 flags ...)
  79.  */
  80. #define FL_do_resolve         0
  81. #define FL_housekeep          1
  82. #define FL_slipin 2
  83. #define FL_slipout 3
  84. #define FL_tcp_timer 4
  85. #define FL_frag_ttl_check 5
  86. #define FL_g_resv 6
  87. #define FL_g_wait 7
  88.  
  89.  
  90. /*--------------------------------------------------------------------------*/
  91.  
  92. /*
  93.  * Input queue structures
  94.  */
  95. typedef struct ndb {        /* Network Data Block.  For data delivery       */
  96.     char        *ptr;       /* Pointer to base of block. (For KRfree();)    */
  97.     char        *ndata;     /* Pointer to next data to deliver              */
  98.     uint16      len;        /* Length of remaining data                     */
  99.     struct ndb  *next;      /* Next NDB in chain or NULL                    */
  100. } NDB;
  101.  
  102.  
  103. /*
  104.  * Connection information block
  105.  */
  106. typedef struct cib {        /* Connection Information Block                 */
  107.     uint16      protocol;   /* TCP or UDP or ... 0 means CIB is not in use  */
  108.     uint16      lport;      /* TCP client port     (ie: local machine)      */
  109.     uint16      rport;      /* TCP server port     (ie: remote machine)     */
  110.     uint32      rhost;      /* TCP server IP addr  (ie: remote machine)     */
  111. } CIB;
  112.  
  113.  
  114. /*
  115.  * Values for protocol field
  116.  */
  117. #define P_ICMP     1
  118. #define P_TCP      6
  119. #define P_UDP     17
  120.  
  121.  
  122. /*--------------------------------------------------------------------------*/
  123.  
  124. /*
  125.  * Transport structure / functions
  126.  */
  127. typedef struct tpl {
  128.     char      *module;      /* Specific string that can be searched for     */
  129.     char      *author;      /* Any string                                   */
  130.     char      *version;     /* Format `00.00' Version:Revision              */
  131.     char   *  __CDECL  (*KRmalloc) (int32);
  132.     void      __CDECL  (*KRfree) (char *);
  133.     int32     __CDECL  (*KRgetfree) (int16 x);
  134.     char   *  __CDECL  (*KRrealloc) (char *, int32);
  135.     char   *  __CDECL  (*get_err_text) (int16);
  136.     char   *  __CDECL  (*getvstr) (char *);
  137.     int16     __CDECL  (*carrier_detect) (void);
  138.     int16     __CDECL  (*TCP_open) (uint32, int16, int16, uint16);
  139.     int16     __CDECL  (*TCP_close) (int16, int16);
  140.     int16     __CDECL  (*TCP_send) (int16, char *, int16);
  141.     int16     __CDECL  (*TCP_wait_state) (int16, int16, int16);
  142.     int16     __CDECL  (*TCP_ack_wait) (int16, int16);
  143.     int16     __CDECL  (*UDP_open) (uint32, int16);
  144.     int16     __CDECL  (*UDP_close) (int16);
  145.     int16     __CDECL  (*UDP_send) (int16, char *, int16);
  146.     int16     __CDECL  (*CNkick) (int16);
  147.     int16     __CDECL  (*CNbyte_count) (int16);
  148.     int16     __CDECL  (*CNget_char) (int16);
  149.     NDB    *  __CDECL  (*CNget_NDB) (int16);
  150.     int16     __CDECL  (*CNget_block) (int16, char *, int16);
  151.     void      __CDECL  (*housekeep) (void);
  152.     int16     __CDECL  (*resolve) (char *, char **, uint32 *, int16);
  153.     void      __CDECL  (*ser_disable) (void);
  154.     void      __CDECL  (*ser_enable) (void);
  155.     int16     __CDECL  (*set_flag) (int16);
  156.     void      __CDECL  (*clear_flag) (int16);
  157.     CIB    *  __CDECL  (*CNgetinfo) (int16);
  158.     int16     __CDECL  (*on_port) (char *port);
  159.     void      __CDECL  (*off_port) (char *port);
  160.     int16     __CDECL  (*setvstr) (char *vs, char *value);
  161.     int16     __CDECL  (*query_port) (char *port);
  162.     int16     __CDECL  (*g_resolve)(char *dn, char **rdn, uint32 *adr_list, int16 lsize); 
  163.     int16     __CDECL  (*g_TCP_wait_state)(int16 cn, int16 state, int16 timeout);
  164.     int16     __CDECL  (*dummy1) (void);
  165.     int16     __CDECL  (*dummy2) (void);
  166.     int16     __CDECL  (*dummy3) (void);
  167.     int16     __CDECL  (*dummy4) (void);
  168.     int16     __CDECL  (*dummy5) (void);
  169.     int16     __CDECL  (*dummy6) (void);
  170.     int16     __CDECL  (*dummy7) (void);
  171.     int16     __CDECL  (*dummy8) (void);
  172. } TPL;
  173.  
  174. extern TPL *tpl;
  175.  
  176.  
  177. /*
  178.  * Definitions of transport functions for direct use
  179.  */
  180. #define KRmalloc(x)             (*tpl->KRmalloc)(x)
  181. #define KRfree(x)               (*tpl->KRfree)(x)
  182. #define KRgetfree(x)            (*tpl->KRgetfree)(x)
  183. #define KRrealloc(x,y)          (*tpl->KRrealloc)(x,y)
  184. #define get_err_text(x)         (*tpl->get_err_text)(x)
  185. #define getvstr(x)              (*tpl->getvstr)(x)
  186. #define carrier_detect()        (*tpl->carrier_detect)()
  187. #define TCP_open(h,p,t,o)       (*tpl->TCP_open)(h,p,t,o)
  188. #define TCP_close(x,y)          (*tpl->TCP_close)(x,y)
  189. #define TCP_send(x,y,z)         (*tpl->TCP_send)(x,y,z)
  190. #define TCP_wait_state(x,y,z)   (*tpl->TCP_wait_state)(x,y,z)
  191. #define TCP_ack_wait(x,y)       (*tpl->TCP_ack_wait)(x,y)
  192. #define UDP_open(x,y)           (*tpl->UDP_open)(x,y)
  193. #define UDP_close(x)            (*tpl->UDP_close)(x)
  194. #define UDP_send(x,y,z)         (*tpl->UDP_send)(x,y,z)
  195. #define CNkick(x)               (*tpl->CNkick)(x)
  196. #define CNbyte_count(x)         (*tpl->CNbyte_count)(x)
  197. #define CNget_char(x)           (*tpl->CNget_char)(x)
  198. #define CNget_NDB(x)            (*tpl->CNget_NDB)(x)
  199. #define CNget_block(x,y,z)      (*tpl->CNget_block)(x,y,z)
  200. #define housekeep()             (*tpl->housekeep)()
  201. #define resolve(w,x,y,z)        (*tpl->resolve)(w,x,y,z)
  202. #define ser_disable()           (*tpl->ser_disable)()
  203. #define ser_enable()            (*tpl->ser_enable)()
  204. #define set_flag(x)             (*tpl->set_flag)(x)
  205. #define clear_flag(x)           (*tpl->clear_flag)(x)
  206. #define CNgetinfo(x)            (*tpl->CNgetinfo)(x)
  207. #define on_port(x)              (*tpl->on_port)(x)
  208. #define off_port(x)             (*tpl->off_port)(x)
  209. #define setvstr(x,y)            (*tpl->setvstr)(x,y)
  210. #define query_port(x)           (*tpl->query_port)(x)
  211. #define g_resolve(x,x,y,z)      (*tpl->g_resolve)(w,x,y,z)
  212. #define g_TCP_wait_state(x,y,z) (*tpl->g_TCP_wait_state)(x,y,z)
  213. #define dummy1()                (*tpl->dummy1)()
  214. #define dummy2()                (*tpl->dummy2)()
  215. #define dummy3()                (*tpl->dummy3)()
  216. #define dummy4()                (*tpl->dummy4)()
  217. #define dummy5()                (*tpl->dummy5)()
  218. #define dummy6()                (*tpl->dummy6)()
  219. #define dummy7()                (*tpl->dummy7)()
  220. #define dummy8()                (*tpl->dummy8)()
  221.  
  222. /*--------------------------------------------------------------------------*/
  223.  
  224. #endif /* STIK_TRANSPRT_H */
  225.